moduleRef.get(token) retrieves a singleton from the module's provider map synchronously and cannot resolve scoped providers. moduleRef.resolve(token) creates a new DI context for REQUEST or TRANSIENT scoped providers — it is async and returns a new instance each call unless you reuse a contextId.
get() — synchronous, singletons only, returns the same cached instance.
resolve() — asynchronous, works with DEFAULT/REQUEST/TRANSIENT scopes.
resolve() creates a new DI sub-context — each call gives a fresh transient instance.
Pass a shared contextId to resolve() to make multiple providers share the same scoped context.